ALMaSS  1.0
The Animal, Landscape and Man Simulation System
Rabbit_Juvenile Class Reference

The rabbit juvenile class. All special juvenile behaviour is described here. More...

#include <Rabbit.h>

Inheritance diagram for Rabbit_Juvenile:
Rabbit_Young Rabbit_Base TAnimal TALMaSSObject

Public Member Functions

 Rabbit_Juvenile (int p_x, int p_y, int p_x2, int p_y2, Rabbit_Female *p_M, Landscape *p_L, Rabbit_Population_Manager *p_NPM, int a_age, int a_weightage, Rabbit_Warren *a_warren)
 Rabbit_Young constructor. More...
virtual ~Rabbit_Juvenile (void)
 Rabbit_Young destructor. More...
TTypeOfRabbitState st_Develop ()
 Development state for young. More...
TTypeOfRabbitState st_BecomeAdult (void)
 Juvenile maturation. More...
TTypeOfRabbitState st_Explore (void)
 Juvenile local exploration. More...
TTypeOfRabbitState st_Forage (void)
 Juvenile forage behaviour. More...
virtual void Step (void)
 The Step is the second 'part' of the timestep that an animal can behave in. It is called continuously until all animals report that they are 'DONE'. More...
virtual void EndStep (void)
 The EndStep is the last 'part' of the timestep that an animal can behave in. More...
virtual bool ShouldMature (void)
 Tests for maturation to the next stage. More...
- Public Member Functions inherited from Rabbit_Young
 Rabbit_Young (int p_x, int p_y, int p_x2, int p_y2, Rabbit_Female *a_mum, Landscape *p_L, Rabbit_Population_Manager *p_NPM, Rabbit_Warren *a_warren)
 Rabbit_Young constructor. More...
virtual ~Rabbit_Young (void)
 Rabbit_Young destructor. More...
TTypeOfRabbitState st_Develop (void)
 Development state for young. More...
TTypeOfRabbitState st_BecomeJuvenile (void)
 Young maturation. More...
virtual void BeingStep (void)
 The BeginStep is the first 'part' of the timestep that an animal can behave in.
- Public Member Functions inherited from Rabbit_Base
TTypeOfRabbitState GetCurrentRState ()
void SetAge (int a_age)
 Set age method. More...
RabbitObjectTypes GetRabbitType (void)
 Get rabbit type. More...
int GetAge (void)
 Get age method. More...
void SetweightAge (int a_age)
 Set age method. More...
int GetweightAge (void)
 Get age method. More...
Rabbit_WarrenGetWarren (void)
 Get warren pointer. More...
void SetWarren (Rabbit_Warren *a_warren)
 Set the warren pointer. More...
bool GetHasBurrow (void)
 Get burrow status. More...
void SetHasBurrow (bool a_status)
 Set/unset burrow status. More...
void SetDigging (int a_days)
 Set number of days to dig. More...
int GetDigging ()
 Get number of days to dig. More...
APoint GetBornLocation ()
 Get location of birth. More...
 Rabbit_Base (int p_x, int p_y, int p_x2, int p_y2, Landscape *p_L, Rabbit_Population_Manager *p_NPM, Rabbit_Warren *a_warren)
 Rabbit constructor. More...
virtual ~Rabbit_Base (void)
 Rabbit destructor. More...
virtual void BeginStep (void)
 The BeginStep is the first 'part' of the timestep that an animal can behave in. It is called once per timestep. More...
void OnFed (void)
 Signals food arrived today. More...
void OnMumDead (void)
 Signals death of mum. More...
void OnEvicted (void)
 Signals mum has a new litter to look after. More...
virtual Rabbit_AdultGetMate (void)
 Get mate pointer. More...
- Public Member Functions inherited from TAnimal
unsigned SupplyFarmOwnerRef ()
AnimalPosition SupplyPosition ()
APoint SupplyPoint ()
int SupplyPolygonRef ()
int Supply_m_Location_x ()
int Supply_m_Location_y ()
virtual void KillThis ()
virtual void CopyMyself ()
void SetX (int a_x)
void SetY (int a_y)
 TAnimal (int x, int y, Landscape *L)
virtual void ReinitialiseObject (int x, int y, Landscape *L)
 Used to re-use an object - must be implemented in descendent classes. More...
virtual int WhatState ()
virtual void Dying ()
void CheckManagement (void)
void CheckManagementXY (int x, int y)
virtual bool OnFarmEvent (FarmToDo)
- Public Member Functions inherited from TALMaSSObject
int GetCurrentStateNo ()
 Returns the current state number. More...
void SetCurrentStateNo (int a_num)
 Sets the current state number. More...
bool GetStepDone ()
 Returns the step done indicator flag. More...
void SetStepDone (bool a_bool)
 Sets the step done indicator flag. More...
virtual void ReinitialiseObject ()
 Used to re-use an object - must be implemented in descendent classes. More...
 TALMaSSObject ()
 The constructor for TALMaSSObject. More...
virtual ~TALMaSSObject ()
 The destructor for TALMaSSObject. More...
void OnArrayBoundsError ()
 Used for debugging only, tests basic object properties. More...

Protected Member Functions

virtual void st_Dying (void)
 Young dying state. More...
virtual void InternalPesticideHandlingAndResponse ()
 Handles internal effects of pesticide exposure - reimplemented from base class. More...
- Protected Member Functions inherited from Rabbit_Base
virtual void Explore (void)
 Exploration method. More...
bool MortalityTest (double a_prop)
 A simple probability based test. More...
bool WalkTo (int a_x, int a_y)
 Walks to a location from current location. More...
virtual void GeneralEndocrineDisruptor (double)
 Handles internal effects of endocrine distrupter pesticide exposure.
virtual void GeneralOrganoPhosphate (double)
 Handles internal effects of organophosphate pesticide exposure. More...
- Protected Member Functions inherited from TAnimal
void CorrectWrapRound ()
 Corrects wrap around co-ordinate problems. More...

Additional Inherited Members

- Public Attributes inherited from Rabbit_Base
RabbitObjectTypes m_RabbitType
 The rabbits type. More...
- Static Public Attributes inherited from Rabbit_Base
static double m_dispersalmortperm = cfg_dispersalmortperm.value()
 The extra dispersal mortality per m travelled. More...
static double m_pesticidedegradationrate = cfg_rabbit_pesticidedegradationrate.value()
 State variable used to hold the daily degredation rate of the pesticide in the body. More...
- Protected Attributes inherited from Rabbit_Base
int m_Age
 The rabbit's age. More...
TTypeOfRabbitState m_CurrentRState
 Variable to record current behavioural state. More...
 This is a time saving pointer to the correct population manager object. More...
double m_MyMortChance
bool m_haveBurrow
 Flag to record burrow status. More...
 True if currently mated. More...
 Pointer to mum. More...
bool m_FedToday
 Flag for been fed today. More...
double m_weight
 The weight in g. More...
int m_weightAge
 A physiological age parameter, this is the growth age based on an optimal curve (if optimal conditions it will be the same as m_age) More...
int m_digging
 Flag to denote digging behaviour. This keeps the rabbit in a warren without burrows whilst it tries to make one. More...
APoint m_born_location
 The x,y location at birth. More...
double m_pesticide_burden
 State variable used to hold the current body-burden of pesticide. More...
bool m_pesticideInfluenced1
 Flag to indicate pesticide effects (e.g. can be used for endocrine distruptors with delayed effects until birth).
- Protected Attributes inherited from TAnimal
int m_Location_x
int m_Location_y
- Protected Attributes inherited from TALMaSSObject
int m_CurrentStateNo
 The basic state number for all objects - '-1' indicates death. More...
bool m_StepDone
 Indicates whether the iterative step code is done for this timestep. More...

Detailed Description

The rabbit juvenile class. All special juvenile behaviour is described here.

Constructor & Destructor Documentation

◆ Rabbit_Juvenile()

Rabbit_Juvenile::Rabbit_Juvenile ( int  p_x,
int  p_y,
int  p_x2,
int  p_y2,
Rabbit_Female p_M,
Landscape p_L,
Rabbit_Population_Manager p_NPM,
int  a_age,
int  a_weightage,
Rabbit_Warren a_warren 

Rabbit_Young constructor.

376  : Rabbit_Young(p_x, p_y, p_x2, p_y2, p_M, p_L, p_NPM, a_warren)
377 {
378  m_Age = a_age;
379  m_weightAge = a_weightage;
380  m_weight = m_OurPopulationManager->GetGrowth( a_weightage );
382  if (a_warren != NULL) a_warren->RabbitProductionRecord(rob_Juvenile, 1);
384 }
static CfgFloat cfg_juvenile_base_mort("RABBIT_JUVENILEBASEMORT", CFG_CUSTOM, 0.004)
Input variable. The daily base level for juvenile mortality before any modifiers are applied.
@ rob_Juvenile
Definition: Rabbit.h:71
double value(void)
Definition: configurator.h:118
double m_weight
The weight in g.
Definition: Rabbit.h:195
Rabbit_Population_Manager * m_OurPopulationManager
This is a time saving pointer to the correct population manager object.
Definition: Rabbit.h:181
int m_Age
The rabbit's age.
Definition: Rabbit.h:177
RabbitObjectTypes m_RabbitType
The rabbits type.
Definition: Rabbit.h:170
double m_MyMortChance
Definition: Rabbit.h:183
int m_weightAge
A physiological age parameter, this is the growth age based on an optimal curve (if optimal condition...
Definition: Rabbit.h:197
double GetGrowth(int a_age)
Get method for the rabbit growth with age.
Definition: Rabbit_Population_Manager.h:116
void RabbitProductionRecord(RabbitObjectTypes YoungType, int kits)
Stores data about production of rabbits throughout year.
Definition: Rabbit.h:582
Rabbit_Young(int p_x, int p_y, int p_x2, int p_y2, Rabbit_Female *a_mum, Landscape *p_L, Rabbit_Population_Manager *p_NPM, Rabbit_Warren *a_warren)
Rabbit_Young constructor.
Definition: Rabbit.cpp:232

References cfg_juvenile_base_mort, Rabbit_Population_Manager::GetGrowth(), Rabbit_Base::m_Age, Rabbit_Base::m_MyMortChance, Rabbit_Base::m_OurPopulationManager, Rabbit_Base::m_RabbitType, Rabbit_Base::m_weight, Rabbit_Base::m_weightAge, Rabbit_Warren::RabbitProductionRecord(), rob_Juvenile, and CfgFloat::value().

◆ ~Rabbit_Juvenile()

Rabbit_Juvenile::~Rabbit_Juvenile ( void  )

Rabbit_Young destructor.

388 {
389  ;
390 }

Member Function Documentation

◆ EndStep()

void Rabbit_Juvenile::EndStep ( void  )

The EndStep is the last 'part' of the timestep that an animal can behave in.

Here we apply a density dependent mortality as well as a daily mortality rate. The mortality is dependent on two factors - whether the rabbit has a burrow (will not be the case for juvenile), and whether the carrying capacity of the warren is reached in terms of number of possible burrows. Note that this EndStep over-rides the Young::EndStep, which is critical because otherwise the rabbit will die due to not having set the m_FedToday flag.

Reimplemented from Rabbit_Young.

488 {
495  if (m_CurrentStateNo == -1) return; // Already dead
496  double mult = 1.0;
497  if (m_myWarren != NULL)
498  {
500  }
501  if (MortalityTest(m_MyMortChance * mult))
502  {
504  st_Dying(); // m_MyMortChance% chance of death
505  return;
506  }
507  // Deal with pesticides if necessary
509 }
@ toRabbits_Die
Definition: Rabbit.h:96
double m_pesticide_burden
State variable used to hold the current body-burden of pesticide.
Definition: Rabbit.h:203
TTypeOfRabbitState m_CurrentRState
Variable to record current behavioural state.
Definition: Rabbit.h:179
Rabbit_Warren * m_myWarren
True if currently mated.
Definition: Rabbit.h:189
bool MortalityTest(double a_prop)
A simple probability based test.
Definition: Rabbit.cpp:194
virtual void InternalPesticideHandlingAndResponse()
Handles internal effects of pesticide exposure - reimplemented from base class.
Definition: Rabbit.cpp:1345
virtual void st_Dying(void)
Young dying state.
Definition: Rabbit.cpp:393
double GetDailyMortalityChanceJ()
Returns the juvenile daily mortality multiplier.
Definition: Rabbit.h:684
int m_CurrentStateNo
The basic state number for all objects - '-1' indicates death.
Definition: PopulationManager.h:116

References Rabbit_Warren::GetDailyMortalityChanceJ(), InternalPesticideHandlingAndResponse(), Rabbit_Base::m_CurrentRState, TALMaSSObject::m_CurrentStateNo, Rabbit_Base::m_MyMortChance, Rabbit_Base::m_myWarren, Rabbit_Base::m_pesticide_burden, Rabbit_Base::MortalityTest(), st_Dying(), and toRabbits_Die.

◆ InternalPesticideHandlingAndResponse()

void Rabbit_Juvenile::InternalPesticideHandlingAndResponse ( )

Handles internal effects of pesticide exposure - reimplemented from base class.

This method is re-implemented ffrom Rabbit_Base for any class which has pesticide response behaviour. If the body burden exceeds the trigger then call pesticide-specific actions by dose

Reimplemented from Rabbit_Base.

1345  {
1351  double pesticideInternalConc = m_pesticide_burden / m_weight;
1353  if (pesticideInternalConc > cfg_RabbitPesticideResponse.value()) {
1354  switch (tp) {
1355  case ttop_NoPesticide:
1356  break;
1358  break;
1359  case ttop_AcuteEffects:
1360  GeneralOrganoPhosphate( pesticideInternalConc ); // Calls the GeneralOrganophosphate action code
1361  break;
1362  default:
1363  g_msg->Warn( "Unknown pesticide type used in Rabbit_Juvenile::InternalPesticideHandlingAndResponse() pesticide code ", int( tp ) );
1364  exit( 47 );
1365  }
1366  }
1367  m_pesticide_burden *= m_pesticidedegradationrate; // Does nothing by default except internal degredation of the pesticide
1368 }
MapErrorMsg * g_msg
This pointer provides access the to the internal ALMaSS error message system.
Definition: maperrormsg.cpp:41
CfgFloat cfg_RabbitPesticideResponse("RABBIT_PESTICDERESPONSETHRESHOLD", CFG_CUSTOM, 0.00001)
Input variable. The threshold above which a rabbit will be killed if it ingests pesticide.
TTypesOfPesticide SupplyPesticideType(void)
Definition: landscape.h:433
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: maperrormsg.cpp:59
static double m_pesticidedegradationrate
State variable used to hold the daily degredation rate of the pesticide in the body.
Definition: Rabbit.h:174
virtual void GeneralOrganoPhosphate(double)
Handles internal effects of organophosphate pesticide exposure.
Definition: Rabbit.cpp:1438
Landscape * m_OurLandscape
Definition: PopulationManager.h:229
Definition: landscape.h:66
@ ttop_NoPesticide
Definition: landscape.h:67
@ ttop_AcuteEffects
Definition: landscape.h:68
@ ttop_ReproductiveEffects
Definition: landscape.h:69

References cfg_RabbitPesticideResponse, g_msg, Rabbit_Base::GeneralOrganoPhosphate(), TAnimal::m_OurLandscape, Rabbit_Base::m_pesticide_burden, Rabbit_Base::m_pesticidedegradationrate, Rabbit_Base::m_weight, Landscape::SupplyPesticideType(), ttop_AcuteEffects, ttop_NoPesticide, ttop_ReproductiveEffects, CfgFloat::value(), and MapErrorMsg::Warn().

Referenced by EndStep().

◆ ShouldMature()

bool Rabbit_Juvenile::ShouldMature ( void  )

Tests for maturation to the next stage.

Reimplemented from Rabbit_Young.

513 {
514  if (m_weightAge>=105) return true; // Development linked to weight gain
515  return false;
516 }

References Rabbit_Base::m_weightAge.

Referenced by st_Develop().

◆ st_BecomeAdult()

TTypeOfRabbitState Rabbit_Juvenile::st_BecomeAdult ( void  )

Juvenile maturation.

TTypeOfRabbitState toRabbits_Remove

Creates a new Rabbit_Male or Rabbit_Female object and passes the data from the juvenile object to it, then signals young object removal.

Sex determination occurs here and then returns toRabbits_Remove to remove the object without causing other system effects.

425 {
431  struct_Rabbit sR;
433  sR.m_L = m_OurLandscape;
434  sR.m_age = m_Age;
436  sR.m_x = m_Location_x;
437  sR.m_y = m_Location_y;
438  sR.m_x2 = m_born_location.m_x;
439  sR.m_y2 = m_born_location.m_y;
440  sR.m_Warren = m_myWarren;
444  if (g_rand_uni()<0.4854) m_OurPopulationManager->CreateObjects(rob_Male,NULL,&sR,1); // 100:106 M:F ratio (Brambell (1942) & Stephens (1952))
446  return toRabbits_Remove;
447 }
boost::variate_generator< base_generator_type &, boost::uniform_real<> > g_rand_uni
@ rob_Female
Definition: Rabbit.h:73
@ rob_Male
Definition: Rabbit.h:72
@ toRabbits_Remove
Definition: Rabbit.h:95
int m_y
Definition: ALMaSS_Setup.h:56
int m_x
Definition: ALMaSS_Setup.h:55
APoint m_born_location
The x,y location at birth.
Definition: Rabbit.h:201
void CreateObjects(RabbitObjectTypes ob_type, TAnimal *pvo, struct_Rabbit *a_data, int a_number)
Method for creating a new individual Rabbit.
Definition: Rabbit_Population_Manager.cpp:250
int m_Location_y
Definition: PopulationManager.h:228
int m_Location_x
Definition: PopulationManager.h:225
Used for creation of a new Rabbit object.
Definition: Rabbit_Population_Manager.h:59
Rabbit_Population_Manager * m_NPM
Rabbit_Population_Manager pointer.
Definition: Rabbit_Population_Manager.h:72
int m_y
Definition: Rabbit_Population_Manager.h:64
int m_x2
x-coord of birth
Definition: Rabbit_Population_Manager.h:66
int m_age
The rabbit age.
Definition: Rabbit_Population_Manager.h:74
Rabbit_Warren * m_Warren
A pointer to the current warren.
Definition: Rabbit_Population_Manager.h:80
int m_y2
y-coord of birth
Definition: Rabbit_Population_Manager.h:68
Landscape * m_L
Landscape pointer.
Definition: Rabbit_Population_Manager.h:70
int m_weightage
The rabbit age in terms of weight.
Definition: Rabbit_Population_Manager.h:76
int m_x
Definition: Rabbit_Population_Manager.h:62

References Rabbit_Population_Manager::CreateObjects(), g_rand_uni, Rabbit_Base::m_Age, struct_Rabbit::m_age, Rabbit_Base::m_born_location, struct_Rabbit::m_L, TAnimal::m_Location_x, TAnimal::m_Location_y, Rabbit_Base::m_myWarren, struct_Rabbit::m_NPM, TAnimal::m_OurLandscape, Rabbit_Base::m_OurPopulationManager, struct_Rabbit::m_Warren, Rabbit_Base::m_weightAge, struct_Rabbit::m_weightage, APoint::m_x, struct_Rabbit::m_x, struct_Rabbit::m_x2, APoint::m_y, struct_Rabbit::m_y, struct_Rabbit::m_y2, rob_Female, rob_Male, and toRabbits_Remove.

Referenced by Step().

◆ st_Develop()

TTypeOfRabbitState Rabbit_Juvenile::st_Develop ( void  )

Development state for young.

new rabbit state toRabbits_Explore, toRabbits_Mature or toRabbits_Die

Ages the rabbit and evaluates whether the rabbit should mature, and if neither then returns toRabbits_Explore

401 {
407  m_Age++;
408  if (ShouldMature()) return toRabbits_Mature;
411  return toRabbits_Explore;
412 }
@ toRabbits_Mature
Definition: Rabbit.h:86
@ toRabbits_Explore
Definition: Rabbit.h:87
virtual bool ShouldMature(void)
Tests for maturation to the next stage.
Definition: Rabbit.cpp:512
bool GetForageDay()
Get method for the forage day flag.
Definition: Rabbit_Population_Manager.h:123

References Rabbit_Population_Manager::GetForageDay(), Rabbit_Population_Manager::GetGrowth(), Rabbit_Base::m_Age, Rabbit_Base::m_OurPopulationManager, Rabbit_Base::m_weight, Rabbit_Base::m_weightAge, ShouldMature(), toRabbits_Explore, and toRabbits_Mature.

Referenced by Step().

◆ st_Dying()

void Rabbit_Juvenile::st_Dying ( void  )

Young dying state.

Reimplemented from Rabbit_Young.

394 {
395  m_CurrentStateNo = -1; // this will kill the animal object and free up space
396  m_StepDone = true;
397 }
bool m_StepDone
Indicates whether the iterative step code is done for this timestep.
Definition: PopulationManager.h:118

References TALMaSSObject::m_CurrentStateNo, and TALMaSSObject::m_StepDone.

Referenced by EndStep(), and Step().

◆ st_Explore()

TTypeOfRabbitState Rabbit_Juvenile::st_Explore ( void  )

Juvenile local exploration.

As a juvenile there is no need to explore the surroungings, the big bad world awaits when the rabbit becomes adult.

416 {
420  return toRabbits_Develop;
421 }
@ toRabbits_Develop
Definition: Rabbit.h:85

References toRabbits_Develop.

Referenced by Step().

◆ st_Forage()

TTypeOfRabbitState Rabbit_Juvenile::st_Forage ( void  )

Juvenile forage behaviour.

This is a critical part of the pesticide handling code. The rabbit forages from the warren area and as a result picks up pesticide. Exactly how much pesticide is picked up depends on the assumptions regarding foraging behaviour. These can be altered here, but the default assumption is that the rabbit will forage from all suitable forgage locations equally, and therefore will pick up an average dose based on the average concentration of residue in the forage areas. This is precalculated by the Rabbit_Warren in UpdatePesticide. The pesticide response code is placed in EndStep - this will determine direct mortality or set any necessary flags indicating pesticide effects later, e.g. for reproduction.

678 {
687  return toRabbits_Explore;
688 }
double GetForagePesticide(void)
Gets the current mean pesticide concentration per unit forage.
Definition: Rabbit.h:628

References Rabbit_Warren::GetForagePesticide(), Rabbit_Base::m_myWarren, Rabbit_Base::m_pesticide_burden, and toRabbits_Explore.

Referenced by Step().

◆ Step()

void Rabbit_Juvenile::Step ( void  )

The Step is the second 'part' of the timestep that an animal can behave in. It is called continuously until all animals report that they are 'DONE'.

Reimplemented from Rabbit_Young.

451 {
452  if (m_StepDone || m_CurrentStateNo == -1) return;
453  switch (m_CurrentRState)
454  {
455  case toRabbits_InitialState: // Initial state always starts with develop
457  break;
458  case toRabbits_Develop:
459  m_CurrentRState=st_Develop(); // Will return movement or die
461  break;
462  case toRabbits_Mature:
464  break;
465  case toRabbits_Foraging:
467  break;
468  case toRabbits_Die:
469  st_Dying(); // No return value - no behaviour after this
470  m_StepDone=true;
471  break;
472  case toRabbits_Explore:
474  m_StepDone=true;
475  break;
476  case toRabbits_Remove:
477  m_CurrentStateNo = -1;
478  m_StepDone=true;
479  break;
480  default:
481  m_OurLandscape->Warn("Rabbit_Juvenile::Step()","unknown state - default");
482  exit(1);
483  }
484 }
@ toRabbits_InitialState
Definition: Rabbit.h:84
@ toRabbits_Foraging
Definition: Rabbit.h:92
void Warn(std::string a_msg1, std::string a_msg2)
Definition: landscape.h:1579
TTypeOfRabbitState st_Develop()
Development state for young.
Definition: Rabbit.cpp:400
TTypeOfRabbitState st_Explore(void)
Juvenile local exploration.
Definition: Rabbit.cpp:415
TTypeOfRabbitState st_Forage(void)
Juvenile forage behaviour.
Definition: Rabbit.cpp:677
TTypeOfRabbitState st_BecomeAdult(void)
Juvenile maturation.
Definition: Rabbit.cpp:424

References Rabbit_Base::m_CurrentRState, TALMaSSObject::m_CurrentStateNo, TAnimal::m_OurLandscape, TALMaSSObject::m_StepDone, st_BecomeAdult(), st_Develop(), st_Dying(), st_Explore(), st_Forage(), toRabbits_Develop, toRabbits_Die, toRabbits_Explore, toRabbits_Foraging, toRabbits_InitialState, toRabbits_Mature, toRabbits_Remove, and Landscape::Warn().

The documentation for this class was generated from the following files: